//二分 贪心 肖恩的苹果园

//正向枚举很复杂，所以考虑反向枚举，先枚举出结果，再和条件作对比，看是否还有更好的结果
//因为苹果树的坑M越多，最大的最近距离就越大
//而当枚举出一个最近距离时，也可以确定出最少的苹果坑M
//结合以上两条，可以知道最近距离与最少苹果坑M时是正相关的
//因此，要求最大的最近距离，就是要找到一个最近距离，使得其所用的最少苹果坑刚好是M
//根据其有序性和正相关特性，可以用二分查找

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

const int N = 1e5+9;
int n=0,m=0;
ll a[N];

//返回最小间距为mid时种完M棵树需要的最少的坑
int check(ll mid)
{
	int loc = 2;
	int pre = 1;
	int tmp=m-1;
	while(tmp>0)
	{
		if(loc > n)
			return n+1;
		
		if(a[loc] - a[pre] < mid)
			loc++;
		else
		{
			pre = loc;
			loc++;
			tmp--;
		}
	}
	
	return loc - 1;
}
int main()
{
	cin >> n >> m;
	for(int i = 1;i <= n; i++)
		cin >> a[i];
	sort(a+1,a+1+n);
	ll l = 0;
	ll r = 1e9+9;
	while(l+1 != r)
	{
		ll mid = (l+r)/2;
		if(check(mid) <= n)//判断坑够不够用
			l = mid;  //够，则增大间距     
		else r = mid; //不够则缩小间距
	}
	cout << l;
	return 0;
}
